package com.only4play.practice.pay.reconcile.core.model;

import com.only4play.codegen.support.constants.ValidStatus;
import com.only4play.codegen.support.model.Request;
import com.only4play.practice.common.enums.pay.OutPayChannelType;
import com.only4play.practice.common.enums.pay.PayModeType;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @author mdy
 */
@Data
public class MerchantAppCreateReq implements Request {
  @Schema(
      title = "所属企业"
  )
  private Long enterpriseId;

  @Schema(
      title = "mchName"
  )
  private String mchName;

  @Schema(
      title = "channelType"
  )
  private OutPayChannelType channelType;

  @Schema(
      title = "支付渠道支付模式"
  )
  private PayModeType channelPayModeType;

  @Schema(
      title = "enableReconcile"
  )
  private ValidStatus enableReconcile;

  @Schema(
      title = "reconcileCycle"
  )
  private Integer reconcileCycle;

  @Schema(
      title = "domain"
  )
  private String domain;

  /** 是否服务商模式 */
  private ValidStatus isServiceProvider;

  //   ####################################   */
  /** 接口加签方式 公钥模式 | 证书模式 */
  private String interfaceSignType;

  /** 应用私钥 */
  private String privateKey;

  /** 支付宝公钥，通过应用公钥上传到支付宝开放平台换取支付宝公钥*/
  private String publicKey;

  /** 应用公钥证书 (证书模式必须) */
  private String appCertPath;

  /** 应用公钥证书的base64编码 (证书模式必须) */
  private String appCertB64;

  /** 支付宝公钥证书 (证书模式必须) */
  private String alipayCertPath;

  /** 支付宝公钥证书的base64编码 (证书模式必须) */
  private String alipayCertB64;

  /** 支付宝根证书 (证书模式必须) */
  private String alipayRootCertPath;

  /** 支付宝根证书的base64编码 (证书模式必须) */
  private String alipayRootCertB64;

/* ******* ss *************/

  /** 应用编号，普通商户模式下是普通商户appId,服务商模式下为服务商appId */
  private String appId;

  /** 子商户号的应用编号 */
  private String subAppId;

  /** appId 对应的接口密码 微信公众号授权获取用户 openId 时会使用到
   * 普通商户模式下是普通商户的 appSecret,服务商模式下为服务商的 appSecret
   * */
  private String appSecret;

  /** 子商户的appSecret */
  private String subAppSecret;

  /** 商户号 */
  private String mchNo;

  /** 子商户号 */
  private String subMchNo;

  /** API 密钥，微信商户后台配置 TODO 是否有V2 与V3 版本 区别*/
  private String partnerKey;

  // api client_cert.p12 证书绝对路径，在微信商户后台下载
  private String weChatCertPath;
  // 微信商户证书内容，base64编码
  private String weChatCertB64;

  private ValidStatus isSandbox;

}
